package com.xiangge.string;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author xiangge
 * @version 1.0
 * @date 2025/4/14 15:59
 * @description
 *      获取指定字符串中，大写字母、小写字母、数字的个数
 *      判断字符串中指定某一个字符在字符串中出现的次数。
 *      模拟trim()方法的实现，忽略字符串中前后的空格
 *
 */
public class StringTest1 {
    public static void main(String[] args) {
        // 定义字符串数组
        String[] strs = {"bca" , "dadfa" , "dddaaa" , "你好啊" , "未来啦,你干嘛你?" , "比怕怕" };

        // 删除strs数组中长度大于5的元素
        // 统计strs中长度大于5的元素个数
        int count = 0;
        for (int i = 0; i < strs.length; i++) {
            if (strs[i].length() >= 5) {
                count++;
            }
        }

        // 定义新数组
        String[] newStrs = new String[strs.length - count];

        // 遍历strs数组，将长度小于5的元素存入newStrs数组
        int index = 0;

        for (int i = 0; i < strs.length; i++) {
            String str = strs[i];
            if(str.length() < 5){
                newStrs[index] = str;
                index++;
            }
        }
        // 打印新数组
        System.out.println(Arrays.toString(newStrs));
    }

    public static void main5(String[] args) {
        // 定义字符串
        String str = "23.23456789";
        HandleAble handleAble = new HandleAble() {
            @Override
            public String handleString(String num) {
                // 字符串操作
                // 键盘录入小数点后指定保留的位数
                System.out.println("请输入保留的位数：");
                int count = new Scanner(System.in).nextInt();

                // 获取 . 第一次出现在 num中的索引
                int index = num.indexOf('.');

                // 截取字符串num
                String str = num.substring(0, index + count + 1);

                // 获取str的最后字符
                char c = str.charAt(str.length() - 1);

                String result = "";

                // 判断 c 是否大于 '5'
                if (c >= '5') {
                    char[] chars = str.toCharArray();
                    // 将字符数组的随后一个位置的元素 + 1
                    chars[chars.length - 1]++;

                    // 将 chars中的字符循环拼接到 result
                    for (char c1 : chars) {
                        result += c1;
                    }
                    return result;
                }
                else {
                    return str;
                }
            }
        };

        String result = handleAble.handleString(str);
        System.out.println("result = " + result);
    }
    public static void main4(String[] args) {
        // 1. 定义字符串str
        String str1 = "java woaijava, i like jajajajavavavava i enjoy java";
        // 获取删除java之前的长度
        int startLength = str1.length();

        // 2. 将str1中所有的java去掉
        while (str1.contains("java")){
            str1 = str1.replace("java",""); // " woai, i like java i enjoy "
        }
        int endLength = str1.length();

        System.out.println("删除java的个数：" + (startLength - endLength) / "java".length()); // 删除java的个数：7
    }
    public static void main3(String[] args) {
        String str1 = "   hello   ";
        // 模拟trim()方法的实现，忽略字符串中前后的空格
        // 去掉str1字符串前面的空格
        while (true){
            if (str1.startsWith(" ")) {
                str1 = str1.substring(1);
            } else {
                break;
            }
        }
        System.out.println("str1 = " + str1);
        // 去掉str1字符串后面的空格
        while (true){
            if (str1.endsWith(" ")) {
                str1 = str1.substring(0, str1.length() - 1);
            } else {
                break;
            }
        }
        System.out.println("str1 = " + str1);

    }
    public static void main2(String[] args) {
        String str1 = "asdASD123uhwft8UEFEROF4R34-";
        char c = 'E';
        // 统计字符c在str1中出现的次数
        int count = 0;
        for (int i = 0; i < str1.length(); i++) {
            if (str1.charAt(i) == c) {
                count++;
            }
        }
        System.out.println("字符c在str1中出现的次数：" + count);
    }
    public static void main1(String[] args) {
        String str1 = "asdASD123uhwft8UEFEROF4R34-";

        /*
             c ：  ['a' , 'z'] 小写字母
             c ：  ['A' , 'Z'] 大写字母
             c ：  ['0' , '9'] 数字
          */
        // 1. 将字符串转为字符数组
        char[] chars = str1.toCharArray();
        // 2. 定义大写字母,小写字母,数字的个数
        int upperCount = 0;
        int lowerCount = 0;
        int numberCount = 0;

        // 3. 遍历数组
        for (char c : chars) {
            if (c >= 'a' && c <= 'z') {
                lowerCount++;
            } else if (c >= 'A' && c <= 'Z') {
                upperCount++;
            } else if (c >= '0' && c <= '9'){
                numberCount++;
            }
        }
        System.out.println("大写字母的个数：" + upperCount);
        System.out.println("小写字母的个数：" + lowerCount);
        System.out.println("数字的个数：" + numberCount);
    }
}
